package IO;

import java.io.*;

/**
 * 字节流的用法：
 *      FileInputStream： 普通字节输入流，用来读取数据的
 *          成员方法：
 *              public int read(byte[] b) :
 *                  一次读取一个字节数组，将读取到的内容存入到字节数组中
 *                  并返回读取到的有效字节数，读不到返回-1
 *
 *      FileOutputStream: 普通字节输出流，用来写出数据的
 *          成员方法:
 *              public void write(byte[] b,int index, int len) :
 *                  一次写入一个指定的字节数组,需要传入数组名，起始索引，有效长度
 */

public class ByteCharacter {
    public static void main(String[] args) throws IOException {
        //1.创建字节输入流对象，关联数据源文件
        //记得传入正确的路径！
        InputStream inputStream = new FileInputStream("D:/code/1.png");

        //2.创建字节输出流对象，关联目的地文件
        OutputStream outputStream = new FileOutputStream("D:/code/我是拷贝滴.png");

        //3.定义变量，记录读取到的内容
        int len;

        //4.循环读取，只要条件满足就一直读，并将读取到的内容赋值给变量
        while ((len = inputStream.read()) != -1)
            /*
            细节:
                这里如果一不小心写成了read()
                后果: read 了个寂寞
            */
        {
            //5.将读取到的数据写入到 目的地文件中
            outputStream.write(len);
        }
        //6.释放资源(建议直接写到最后，以防忘记释放)
        inputStream.close();
        outputStream.close();
    }
}
/**
 * Summary（总结）
 *      拷贝纯文本文件使用字符流，拷贝其他（视频，图片，音频等）文件  使用字节流。
 */